package com.chinatechstar.component.commons.utils;

import com.chinatechstar.component.commons.support.ApplicationSupport;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.stereotype.Component;

/**
 * @author Rei
 */
@Component
public class Oauth2Utils {

    private Oauth2Utils() {
    }

    /**
     * oauth2 认证服务器直接处理校验请求的逻辑
     *
     * @param accessToken token
     * @return OAuth2AccessToken
     */
    public static OAuth2AccessToken checkTokenInOauth2Server(String accessToken) {
        TokenStore tokenStore = (TokenStore) ApplicationSupport.getBean("tokenStore");
        return tokenStore.readAccessToken(accessToken);
    }

    /**
     * oauth2 认证服务器直接处理校验请求的逻辑
     *
     * @param accessToken token
     * @return OAuth2Authentication
     */
    public static OAuth2Authentication getAuthenticationInOauth2Server(String accessToken) {
        TokenStore tokenStore = (TokenStore) ApplicationSupport.getBean("tokenStore");
        return tokenStore.readAuthentication(accessToken);
    }
}
